package org.study.tdengine.mybatis.boot.mapper;

import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * TDengine子表操作
 *
 * @author doveylovey
 * @version v1.0.0
 * @email 1135782208@qq.com
 * @date 2024年06月06日
 */
public interface SubTableMapper {
    /**
     * 当前数据库中的所有表名
     *
     * @param tablePrefix 表前缀，用于模糊搜索
     */
    List<String> showTables(@Param("tablePrefix") String tablePrefix);

    /**
     * 显示一个表的创建语句
     *
     * @param tableName 表名称
     */
    Map<String, String> showCreateTable(@Param("tableName") String tableName);

    /**
     * 获取表结构信息
     *
     * @param dbName    数据库名称
     * @param tableName 表名称
     */
    List<Map<String, Object>> describeTable(@Param("dbName") String dbName, @Param("tableName") String tableName);

    /**
     * 查看系统中已经存在的索引
     *
     * @param dbName     数据库名称
     * @param tableName  表名称
     * @param columnName 列名称
     * @param indexName  索引名称
     */
    List<Map<String, Object>> showIndex1(@Param("dbName") String dbName, @Param("tableName") String tableName,
                                         @Param("columnName") String columnName, @Param("indexName") String indexName);

    /**
     * 查看指定表中存在的索引
     *
     * @param dbName    数据库名称
     * @param tableName 表名称
     */
    List<Map<String, Object>> showIndex2(@Param("dbName") String dbName, @Param("tableName") String tableName);

    /**
     * 查看指定表中存在的索引
     *
     * @param dbName    数据库名称
     * @param tableName 表名称
     */
    List<Map<String, Object>> showIndex3(@Param("dbName") String dbName, @Param("tableName") String tableName);
}
